C-limits.h中定义的整型值大小

1 ISO C 整型限制列表

名称 说明 可接受的最小值 典型值
CHAR_BIT char的位数(bit) 8 8
CHAR_MAX char的最大值 127 127
CHAR_MIN char的最小值 127 128
SCHAR_MIN signed char的最大值 127 127
SCHAR_MIN signed char的最小值 127 128
UCHAR_MAX unsigned char 的最大值 255 255
INT_MAX int 的最大值 32 767 2 147 483 647
INT_MIN int 的最大值 32 767 2 147 483 647
UINT_MAX unsigned int 的最大值 65 535 4 294 967 295
SHRT_MAX short 的最大值 32 767 32 767
SHRT_MIN short 的最小值 32 767 32 768
USHRT_MAX unsigned short 的最大值 65 535 65 535
LONG_MAX long的最大值 2 147 483 647 2 147 483 647
LONG_MIN long 最小值 2 147 483 647 2 147 483 648
ULONG_MAX unsigned long 的最大值 4 294 967 295 4 294 967 295
LLONG_MAX long long 的最大值 9 223 372 036 854 775 807 9 223 372 036 854 775 807
LLONG_MIN long long 的最小值 9 223 372 036 854 775 807 9 223 372 036 854 775 808
ULLONG_MAX unsigned long long 的最大值 18 446 744 073 709 551 615 18 446 744 073 709 551 615
MB_LEN_MAX 在一个多字节字符常量中的最大字节数 1 6

2 ISO C 常量限制

限制 FreeBSD 8.0 Linux 3.2.0 Mac OS X 10.6.8 Solaris 10
FOPEN_MAX 20 16 20 20
TMP_MAX 308915776 238 328 308 915 776 17 576
FILENAME_MAX 1024 4096 1024 1024
#include <limits.h>
#include <stdlib.h>
#include "io_utils.h"

void Print_Size_Of(void);

void Print_Limit(void);

void Print_Const_Limit(void);

int main() {
    Print_Limit();
    PRINTLNF("#######################");
    Print_Const_Limit();
    PRINTLNF("#######################");
    Print_Size_Of();
    exit(0);
}

void Print_Size_Of(void) {
    PRINT_INT(sizeof(char));
    PRINT_INT(sizeof(int));
    PRINT_LONG(sizeof(short));
    PRINT_LONG(sizeof(long));
    PRINT_INT(sizeof(long long));
    exit(0);
}

void Print_Limit(void) {
    //char
    PRINT_INT(CHAR_BIT);
    PRINT_INT(CHAR_MAX);
    PRINT_INT(CHAR_MIN);
    PRINTLNF("---------------------------");

    //schar
    PRINT_INT(SCHAR_MAX);
    PRINT_INT(SCHAR_MIN);
    PRINT_INT(UCHAR_MAX);
    PRINTLNF("---------------------------");
    //int
    PRINT_INT(INT_MAX);
    PRINT_INT(INT_MIN);
    PRINT_INT(UINT_MAX);
    PRINTLNF("---------------------------");
    //short
    PRINT_INT(SHRT_MIN);
    PRINT_INT(SHRT_MAX);
    PRINTLNF("---------------------------");
    //long
    PRINT_LONG(LONG_MIN);
    PRINT_LONG(LONG_MAX);
    PRINT_LONG(ULONG_MAX);
    PRINTLNF("---------------------------");
    //long long
    PRINT_LONG(LLONG_MAX);
    PRINT_LONG(LLONG_MIN);
    PRINT_LONG(ULLONG_MAX);
    PRINTLNF("---------------------------");
    // multibyte
    PRINT_LONG(MB_LEN_MAX);
}

void Print_Const_Limit(void){
    PRINT_INT(FOPEN_MAX);
    PRINT_INT(TMP_MAX);
    PRINT_INT(FILENAME_MAX);
}